<!doctype html>
<html>

<head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">

    <title>函数表达式和函数声明有什么区别？</title>

    <link rel="stylesheet" href="../css/reveal/reveal.css">

    <!-- PPT主题，可以在/css/reveal/theme/中选择其他主题，目前暂时只能使用该模板 -->
    <link rel="stylesheet" href="../css/reveal/theme/ptt.css">

    <!-- syntax highlighting 代码高亮主题 -->
    <link rel="stylesheet" href="../lib/reveal/css/zenburn.css">

    <!-- 打印和PDF输出样式 -->
    <script>
        var link = document.createElement('link');
        link.rel = 'stylesheet';
        link.type = 'text/css';
        link.href = window.location.search.match(/print-pdf/gi) ? '../css/reveal/print/pdf.css' :
            '../css/reveal/print/paper.css';
        document.getElementsByTagName('head')[0].appendChild(link);
    </script>
</head>

<body>
    <img src="../img/demo/logo.png" alt="" usemap="#pttmap" class="base-logo">
    <map name="pttmap">
        <area shape="rect" coords="0,0,276,58" href="http://www.jnshu.com" alt="" target="_blank" />
    </map>
    <div class="reveal">
        <div class="slides">
            <section>
                <h3>【JS-task02】函数申明与函数表达式的区别</h3>
                <p>分享人：邱天成</p>
            </section>

            <section>
                <p>目录</p>
                <p>1.背景介绍</p>
                <p>2.知识剖析</p>
                <p>3.常见问题</p>
                <p>4.解决方案</p>
                <p>5.编码实战</p>
                <p>6.扩展思考</p>
                <p>7.参考文献</p>
                <p>8.更多讨论</p>
            </section>

            <section>
                <section>
                    <h3>1.背景介绍</h3>
                </section>
                <section>
                    <h4>什么是函数声明？</h4>
                    <p>
                        函数声明可以定义命名的函数变量，而无需给变量赋值。函数声明是一种独立的结构，不能嵌套在非功能模块中。可以将它类比为 变量声明。就像变量声明必须以“var”开头一样，变量声明必须以“function”开头。函数名在自身作用域和父作用域内是可获取的（否则就取不到函数了）。
                    </p>
                </section>
                <section>
                    <h4>什么是函数表达式？</h4>
                    <p>函数表达式将函数定义为表达式语句（通常是变量赋值）的一部分。通过函数表达式定义的函数可以是命名的，也可以是匿名的。函数表达式不能以“function”开头（下面自调用的例子要用括号将其括起来）。函数名（如果有的话）在作用域外是不可获取的（与
                        Function Declaration 对比）。</p>
                </section>
            </section>

            <section>
                <section>
                    <h3>2.知识剖析</h3>
                </section>
                <section>
                    <h3>函数声明</h3>
                    <h4>实例：</h4>
                    <img src="../img/QTC_ppt/fun1.png" alt="图呢？">
                </section>

                <section>
                    <h3>函数表达式</h3>
                    <h4>实例:</h4>
                    <img src="../img/QTC_ppt/fun2.png" alt="图呢？">
                </section>
                <section>
                    <p>上面的代码实际执行顺序</p>
                    <img src="../img/QTC_ppt/fun1.1.png" alt="图呢？">
                    <img src="../img/QTC_ppt/fun2.1.png" alt="1">
                </section>
            </section>

            <section>
                <section>
                    <h3>3.常见问题</h3>
                </section>
                <section>
                    <p>
                        函数表达式创建的函数大多是匿名的。在代码调试的时候比较麻烦；
                    </p>
                </section>
            </section>

            <section>
                <section>
                    <h3>4.解决方法</h3>
                </section>
                <section>
                    <p>
                        建议使用 Named Function Expressions
                    </p>
                    <img src="../img/QTC_ppt/fun3.png" alt="图呢？">
                </section>
            </section>

            <section>
                <section>
                    <h3>5、编码实战</h3>
                </section>
                
            </section>
            <section>
                <section>
                    <h3>6、扩展思考</h3>
                    <p>哪些地方不能用函数声明？</p>
                </section>
                <section>
                    <p>
                        官方是禁止在非功能模块（比如 if）中使用函数声明的。但是所有浏览器都支持，但是各自的解释方式不同。
                    </p>
                </section>
                <section>
                    <img id="change" src="../img/QTC_ppt/fun-no.png" alt="图呢?">
                </section>
            </section>
            <section>
                <section>
                    <h3>7、参考文献：</h3>
                </section>
                <section>
                    <div style="text-align:left ; padding:0% 12% ;font-size:34px">
                        <p>参考一：
                            <a href="http://web.jobbole.com/87534/" target="_blank">函数申明与函数表达式的区别</a>
                        </p>
                    </div>
                </section>
            </section>
            <section>
                <section>
                    <h3>8、更多讨论</h3>
                </section>
            </section>
            <section>
                <p>谢谢大家</p>
                <p>制作人： 邱天成</p>
            </section>

        </div>
    </div>

    <script src="../lib/reveal/js/head.min.js"></script>
    <script src="../lib/reveal/reveal.js"></script>
    <script>
        document.getElementById("change").onclick = function () {
            document.getElementById("change").setAttribute("src", "../img/QTC_ppt/wtm.jpg");
            // alert("a");
        }
    </script>
    <script>
        // 以下为常见配置属性的默认值
        // {
        // 	controls: true, // 是否在右下角展示控制条
        // 	progress: true, // 是否显示演示的进度条
        // 	slideNumber: false, // 是否显示当前幻灯片的页数编号，也可以使用代码slideNumber: 'c / t' ，表示当前页/总页数。
        // 	history: false, // 是否将每个幻灯片改变加入到浏览器的历史记录中去
        // 	keyboard: true, // 是否启用键盘快捷键来导航
        // 	overview: true, // 是否启用幻灯片的概览模式，可使用"Esc"或"o"键来切换概览模式
        // 	center: true, // 是否将幻灯片垂直居中
        // 	touch: true, // 是否在触屏设备上启用触摸滑动切换
        // 	loop: false, // 是否循环演示
        // 	rtl: false, // 是否将演示的方向变成RTL，即从右往左
        // 	fragments: true, // 全局开启和关闭碎片。
        // 	autoSlide: 0, // 两个幻灯片之间自动切换的时间间隔（毫秒），当设置成 0 的时候则禁止自动切换，该值可以被幻灯片上的 ` data-autoslide` 属性覆盖
        // 	transition: 'default', // 切换过渡效果，有none/fade/slide/convex/concave/zoom
        // 	transitionSpeed: 'default', // 过渡速度，default/fast/slow
        // 	mouseWheel: false, //是否启用通过鼠标滚轮来切换幻灯片
        // }

        // 初始化幻灯片
        Reveal.initialize({
            history: true,
            transition: 'convex',


            dependencies: [{
                    src: '../plugin/markdown/marked.js'
                },
                {
                    src: '../plugin/markdown/markdown.js'
                },
                {
                    src: '../plugin/notes/notes.js',
                    async: true
                },
                {
                    src: '../plugin/highlight/highlight.js',
                    async: true,
                    callback: function () {
                        hljs.initHighlightingOnLoad();
                    }
                }
            ]
        });
    </script>
</body>

</html>